// pages/home/home.js
Page({
  getBanners() {
    // 发送请求
    wx.request({
      url: 'http://localhost:3000/banners',
      success: resp => {
        // 保存数据
        this.setData({
          banners: resp.data
        })
      },
      fail: error => {
        console.log(error)
      }
    })
  },
  getMenus() {
    // 发送请求
    wx.request({
      url: 'http://localhost:3000/menus',
      success: resp => {
        const arr = resp.data;
        const resultArr = []
        // 二次处理数据
        while (arr.length) {
          resultArr.push(arr.splice(0, 2))
        }
        // 保存数据
        this.setData({
          menus: resultArr
        })
      },
      fail: error => {
        console.log(error)
      }
    })
  },
  getLists() {
    return new Promise((resolve, reject) => {
      // 开启弹框 弹款loading 
      wx.showLoading({
        title: '数据拼命加载中...',
      })
      // 设置节流阀
      this.setData({
        loading: true
      })
      // 发送请求
      wx.request({
        url: 'http://localhost:3000/lists',
        data: {
          // 分页参数
          _page: this.data.page
        },
        success: resp => {
          // 保存数据
          this.setData({
            lists: [...this.data.lists, ...resp.data],
            total: +resp.header['X-Total-Count']
          })
          resolve(resp)
        },
        fail: error => {
          console.log(error);
          reject(error)
        },
        complete: () => {
          this.setData({
            loading: false
          });
          wx.hideLoading()
        }
      })
    })
  },
  /**
   * 页面的初始数据
   */
  data: {
    banners: [],
    menus: [],
    lists: [],
    page: 1,
    total: 0,
    // 节流阀
    loading: true
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getBanners()
    this.getMenus()
    this.getLists()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      page: 1,
      lists: [],
      total: 0
    })
    this.getLists().then(() => {
      wx.stopPullDownRefresh({
        success: () => {
          wx.showToast({
            title: '刷新成功～',
            icon: 'none'
          })
        }
      })
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    // 是否正在加载数据
    if (this.data.loading) return;
    // 是否加载完毕;
    if (this.data.lists.length >= this.data.total) {
      return;
    }
    // 页码 + 1
    this.setData({
      page: this.data.page + 1
    })
    // 重新请求数据
    this.getLists()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})